Traditional computer systems have been designed using a single-layered, non-hierarchical hardware device paradigm. Essentially, controllable hardware devices were connected directly to the micro processor and the characteristics of these hardware devices had to be described to the operating system.
In prior attempts to define and describe hardware devices to the operating system (such as Plug-n-Play (PnP) BIOS and Advanced Power Management (APM) BIOS), the hardware definitions have been in the form of a flat-file reference. For example, PnP BIOS provides a flat-file (non-hierarchical) listing of the hardware devices for a computer system without describing the device relationships (e.g., physical & logical connections) and hardware dependency relationships (e.g., power requirements).
However, other computer hardware architectures are designed using a hierarchical hardware device paradigm. These hierarchical computer hardware device designs cannot be adequately described using non-hierarchical descriptions. An example of such an advanced hierarchical computer hardware architecture would include a high speed memory bus, with a high speed Peripheral Component Interconnect (PCI) bus attached to the memory bus, and with a lower speed Industry Standard Architecture (ISA) bus attached to the PCI bus. This nested or hierarchical computer architecture approach gives better system performance when high speed data transactions are required.
Hierarchical computer hardware designs have also been implemented in laptop computers that pose special problems of defining hardware devices. For example, when a laptop computer is inserted or "docked" into a desktop docking station, the configuration of the computer changes and new hardware devices are available to the computer. Under PnP BIOS, the computer must fully redetect all of the devices of the computer system because there is no representation of which specific devices are affected by configuration changes. Due to the non-hierarchical description of hardware devices, PnP BIOS must assume all devices are either new devices or old devices. Additionally, PnP BIOS has problems determining specific configuration changes when devices are "layered" or nested, e.g., one device plugs into a socket on another device, etc. This same type of problem also occurs when a laptop is "undocked" from the docking station.
In the APM BIOS, a different kind of flat-file listing of hardware devices in the computer system is used. Here, the flat-file listing uses a numbering system for identifying devices rather than device id's used by PnP BIOS. The numbering system used by APM BIOS also has a "name resolution" problem when changes to the hardware configuration occur. The operating system cannot resolve the problem of which specific hardware device has changed when hardware devices are referenced merely by a number and described in a non-hierarchical way. Furthermore, it would be advantageous to unify how the hardware configuration is identified via a common interface while solving this name resolution problem.
Therefore, there is a need for a method for (1) describing the hardware devices to the operating system, (2) describing connections or dependencies between the devices, and (3) provide extensible and abstract methods of controlling the devices executable by the operating system or any other software module, such as the BIOS routines.